#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>

// 主函数，程序入口点
int main(int argc, char *argv[]){
    int fd;  // 文件描述符
    int i;   // 循环变量

    // 写缓冲区，包含13个字节的数据，将发送到MCP2515
    char w_buf[13]= {0x66,0x08,0x22,0x33,0x08,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08};
    // 读缓冲区，用于接收从MCP2515读取的数据
    char r_buf[13] = {0};

    // 打开MCP2515设备文件，获取文件描述符
    fd = open("/dev/mcp2515", O_RDWR);
    if(fd < 0){
        // 打开设备文件失败，打印错误信息并返回
        printf("open /dev/mcp2515 error \n");
        return -1;
    }

    // 将写缓冲区的数据写入设备
    write(fd, w_buf, sizeof(w_buf));
    // 从设备读取数据到读缓冲区
    read(fd, r_buf, sizeof(r_buf));
    
    // 打印读缓冲区的数据
    for(i = 0; i < 13; i++){
        printf("r_buf[%d] is %d\n", i, r_buf[i]);
    }
    
    // 关闭设备文件
    close(fd);
    return 0;  // 返回0表示程序正常结束
}
